// Action Script para Conectar com SQLite

import flash.data.SQLConnection;
import flash.data.SQLStatement;
import flash.filesystem.File;

import mx.collections.ArrayCollection;
import mx.controls.Alert;

private var dbFile:File;
private var conexao:SQLConnection;
private var sqldb:SQLStatement;

private function init():void
{
	dbFile = File.applicationDirectory.resolvePath("db/agenda.db");
	conexao = new SQLConnection();
	conexao.open(dbFile);
	selecionar();
}

private function selecionar():void
{
	var sqldb:SQLStatement = new SQLStatement(); // cria instância para a query
	sqldb.sqlConnection = conexao;
	sqldb.text = "SELECT * FROM contatos";
	sqldb.execute();
	
	var arrayContatos:ArrayCollection = new ArrayCollection(sqldb.getResult().data);
	dataGridContatos.dataProvider = arrayContatos;
}

private function inserir():void
{
	// validação dos dados
	var nome:String = txtNome.text;
	var email:String = txtEmail.text;
	var celular:String = txtCelular.text;
	
	if(nome.length == 0 || email.length == 0 || celular.length == 0)
	{
		Alert.show("Você precisa preencher todos os campos!");
	}
	else
	{
		// inserindo os dados
		var sqldb:SQLStatement = new SQLStatement(); // cria instância para a query
		sqldb.sqlConnection = conexao;
		sqldb.text = "INSERT INTO contatos (nome, email, celular) VALUES (:nome, :email, :celular)";
		sqldb.parameters[":nome"] = txtNome.text;
		sqldb.parameters[":email"] = txtEmail.text;
		sqldb.parameters[":celular"] = txtCelular.text;
		sqldb.execute();
		
		selecionar(); // atualiza dadaGrid
	}
}

private function getContato():void
{
	txtCod.text = dataGridContatos.selectedItem.cod;
	txtNome.text = dataGridContatos.selectedItem.nome;
	txtEmail.text = dataGridContatos.selectedItem.email;
	txtCelular.text = dataGridContatos.selectedItem.celular;
	
	btnAtualizar.enabled = true;
	btnExcluir.enabled = true;
}

private function atualizar():void
{
	var cod:String = txtCod.text;
	var nome:String = txtNome.text;
	var email:String = txtEmail.text;
	var celular:String = txtCelular.text;
	
	var sqldb:SQLStatement = new SQLStatement();
	sqldb.sqlConnection = conexao;
	sqldb.text = "UPDATE contatos SET nome = :nome, email = :email, celular = :celular WHERE cod = :cod ";
	
	sqldb.parameters[":cod"] = txtCod.text;
	sqldb.parameters[":nome"] = txtNome.text;
	sqldb.parameters[":email"] = txtEmail.text;
	sqldb.parameters[":celular"] = txtCelular.text;
	
	sqldb.execute();
	selecionar();
}

private function excluir():void
{
	var sqldb:SQLStatement = new SQLStatement();
	sqldb.sqlConnection = conexao;
	sqldb.text = "DELETE FROM contatos WHERE cod = :cod ";
	
	sqldb.parameters[":cod"] = dataGridContatos.selectedItem.cod;
	
	sqldb.execute();
	selecionar();
}

private function pesquisar():void
{
	var sqldb:SQLStatement = new SQLStatement();
	sqldb.sqlConnection = conexao;
	sqldb.text = "SELECT * FROM contatos WHERE nome LIKE '%' || :busca || '%' ";
	
	sqldb.parameters[":busca"] = txtPesquisa.text;
	
	sqldb.execute();
	
	var arrayContatos:ArrayCollection = new ArrayCollection(sqldb.getResult().data);
	dataGridContatos.dataProvider = arrayContatos;
	btnLimpar.enabled = true;
}

private function limparPesquisa():void
{
	selecionar();
	btnLimpar.enabled = false;
}